package br.pucminas.managedbeans;

import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Map;

import javax.faces.application.FacesMessage;
import javax.faces.application.FacesMessage.Severity;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;

import br.pucminas.enums.MensagemEnum;

public class GenericManagedBean implements IManagedBean {

	private static final long serialVersionUID = 6110421186111097376L;
	
	protected MensagemEnum mensagemEnum;
	
	protected void enviaMensagem(Severity severidadeErro, MensagemEnum mensagemEnum, String detalheMensagem){
		FacesMessage msg = new FacesMessage(severidadeErro, mensagemEnum.toString(), detalheMensagem);
		FacesContext.getCurrentInstance().addMessage(null, msg);
	}
	
	protected void enviaMensagem(String clienteId, Severity severidadeErro, MensagemEnum mensagemEnum, String detalheMensagem){
		FacesMessage msg = new FacesMessage(severidadeErro, mensagemEnum.toString(), detalheMensagem);
		FacesContext.getCurrentInstance().addMessage(clienteId, msg);
	}
	
	protected void invalidaSessao(){
		FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
	}
	
	protected String getStringPilhaExcecao(Throwable throwable){
		StringWriter stringWriter = new StringWriter();
		PrintWriter printWriter = new PrintWriter(stringWriter);
		
		throwable.printStackTrace(printWriter);
		printWriter.flush();
		printWriter.close();
		
		return stringWriter.toString();
	}
	
	protected Map<String, String> recuperaParametros(){
		ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
		Map<String, String> requestParams = externalContext.getRequestParameterMap();
		return requestParams;
	}

}
